package pers.wensheng.patterns.creator_pattern.singleton_pattern.destroy_and_solve.serialization_mode;

import java.io.*;

/**
 *  测试序列化与反序列化的方式破环单例模式，以及防御机制
 */
public class Main {
    public static void main(String[] args) throws IOException, ClassNotFoundException {
        writeObject2File();
        //这两个对象不是同一个对象
        readObject2File();
        readObject2File();
    }
    /**
     * 向文件中写数据（对象），序列化
     */
    public static void writeObject2File() throws IOException {
        //1.获取对象
        Singleton instance = Singleton.getInstance();
        //2.创建对象输出流对象
        ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("E:\\desktop\\aaa.txt"));
        //3.写对象
        oos.writeObject(instance);
        //4.释放资源
        oos.close();
    }

    /**
     *  从文件中读取数据（对象）
     */
    public static Singleton readObject2File() throws IOException, ClassNotFoundException {
        ObjectInputStream ois = new ObjectInputStream(new FileInputStream("E:\\desktop\\aaa.txt"));
        Singleton instance = (Singleton)ois.readObject();
        System.out.println(instance);
        ois.close();
        return instance;
    }
}
